Developer's documentation. V0.5.2
The version of BeBuilder we will talking about in this document is BeBuilder V0.5.2

General Architecture

BeBuilder is based on a component model. 
You have a main window that deals with an addon manager.
All the component have a main component class and a code generator class.
Thoses components are called addons too. They are two main kind of AddOns, internal addons and external addons. Internal addons are binded and linked in the final BeBuilder exe. External addons are loaded during startup.

We have the concept of PropertyEditor which are used to modify the properties of a component.

Class by class 

Kernel part.

This is the oldest part of the project. Some classes have been used in other project and don't follow my new code standard.

BGeneralWindow : 
	Very old class written in early 98, it gives us a consistent look and feel.
BGeneralWindowOption :
	This class is responsible to load and save the form properties to a file.
	Inherited from BOption.
BJerTranslate:
	Just try to wrap the translation kit to meet my needs.
BOption:
	A class to load and save some properties to a file.
Couleur.h
	Define some simple colors.
FileReader
	A Class to read from files.
FileWriter
	A Class to write to files.
FileRW
	A class to read from files or/and write to files, could be simplify. Inherited from FileReader 
	and FileWriter.
GeneralException
	A class to simplify the generation of exception, should be more used in the whole program! :)
GeneralOutlineList
	This class inherited from BOutlinelist will send you a BMessage when a user click on a specific
	 element.
Global
	This is not a class just a bunch of useful functions.
HierarchicalStringList
	This class is list of strings :) and is hierarchical... not completly debugged.
JerFiles
	A Class to simplify some basic functions on BFile.
Object
	The father of all object in a true oo hierarchy. Should be used for every classes in the project.
OpenDir
	Just to be able to open a directory (not a file) inherited from BFilePanel
StringList
	The most useful class.


BeBuilder part.

On this part we will see the core of BeBuilder. It would be interesting to change the gui and to do it less binded with the core of BeBuilder. I mean we should write a controller between the gui and the core.

AddOnManager : 
	This class knows how to handle internal and external addons.
BeBuilder
	The main class, setting mime types and so on...
BeBuilderOption
	This class will hold the options for BeBuilder, for the moment only the Editor's preferences are saved. Inherited from BOption.
BuilderMenu
	The menu of BeBuilder.
BuilderView
	As any BeOS application we have a view that is contained in a Window.
BuilderWindow
	The main window.
CodeFile
	For the dynamic code generation we have the notion of File where the code has been written. The code file are handles 
	maintained by components.
CodeGenerator
	The mother class for all Component's CodeGenerator
CodeLine
	Like CodeFile, those handles are maintained by components.
Component
	The mother class of any component.
ComponentItem
	This class is used to display a component in the OutlineList in the BeBuilder's window.
ComponentKindaView
	A daughter of Component, but will be used by components that will act like views.
ComponentList
	A list to handle components.
EditorOption
	This class is used to save and load the Editor's preferences.
GlobalVar.h
	This file will contain global variables.
Parser
	This class is used for the code generation. THIS IS NOT A C++ PARSER.
Property
	A Property is included in a component.
PropertyList
	To handle properties easily.
ToolBar
	The windows that handles tools (buttons)
ToolBarView
	The view associated with the ToolBar.
ToolView
	The View associated with the ToolWindow
ToolWindow
	This window will display properties.
ViewOption
	View associated with WindowOption
WindowOption
	This window will display the preferences. For the moment only one preference is saved.


Component part.

All these classes are inherited from Component or ComponentKindaView and a BeOS's object.
Due to some limitations in the BeOS api, you will find some problems like with the BMenu or why the BTabView is not included.
To include the BTabView we will need to create our own BTabView.

BoxComponent : 
	The BBox object.
ButtonComponent
	The BButton object.
CheckBoxComponent
	The BCheckBox object
MenuBarComponent
	The BMenuBar object
MenuFieldComponent
	The BMenuField object
MenuItemComponent
	The BMenuItem object
MenuSeparatorComponent
	This object doesn't exist in BeOS.
ProjectComponent
	A BeBuilder's project is seen like any other component.
RadioButtonComponent
	The BRadioButton object
SliderComponent
	The BSlider object
TextControlComponent
	The BTextControl object
ViewComponent
	The BView object
WindowComponent
	The BWindow object

CodeGenerator part.

A component or addon has always a component part like you may have already noticed, and a codegenrator part.
This part is inherited from CodeGenerator.

BoxCodeGenerator 
	The BoxComponent's codegenerator.
ButtonCodeGenerator
	The ButtonComponent's codegenerator.
CheckCodeGenerator
	The CheckCodeComponent's codegenerator.
MenuCodeGenerator
	The MenuCodeComponent's codegenerator.
MenuFieldCodeGenerator
	The MenuFieldComponent's codegenerator.
MenuItemCodeGenerator
	The MenuItemComponent's codegenerator.
MenuSeparatorCodeGenerator
	The MenuSeparatorComponent's codegenerator.
ProjectCodeGenerator
	The ProjectComponent's codegenerator.
RadioButtonCodeGenerator
	The RadioButtonComponent's codegenerator.
SliderCodeGenerator
	The SliderComponent's codegenerator.
TextControlCodeGenerator
	The TextControlComponent's codegenerator.
ViewCodeGenerator
	The ViewComponent's codegenerator.
WindowCodeGenerator
	The WindowComponent's codegenerator.


PropertyEditor part.

Properties' Editor are used when you want to modify a property. Those editors are standard. We could imagine to have property editor for database, color, font...

MenuPropertyEditorChoice
	This class is used by the property editors
PropertyEditorChoice
	This window for a simple choice property editor.
PropertyEditorChoiceView
	This view for the previous window.
PropertyEditorMultiChoice
	This window is for a multiple choice of values for the same property.
PropertyEditorMultiChoiceView
	This view for the previous window.
PropertyEditorStandard
	This window is the simplest property editor i.e. a simple textbox and a label.
PropertyEditorStandardView
	This view for the previous window.
PropertyEditorView
	Mother of all previous PropertyEditorViews
PropertyEditorWindow
	Mother of all previous PropertyEditorWindows


Feel free to contact me for any questions concerning BeBuilder. 
No questions are stupid, only the answers. :)

Jerome Fillon
Montreal, Quebec.
jerome@softimedia.com


